using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.Mobile;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.MobileControls;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Globalization;

using Admaco.Data;

public partial class IniciarAnalisisPCANeuronal : System.Web.UI.MobileControls.MobilePage
{
    protected void Page_Load(object sender, EventArgs e)
    {
        // Carga la lista de ficheros
        Fichero fichero = new Fichero();
        ArrayList ficheros = fichero.getAll();

        foreach (Fichero us in ficheros)
        {
            ficherosList.Items.Add(us.Titulo);
        }


        // Carga la lista con los niveles de prioridad
        Prioridad prioridad = new Prioridad();
        ArrayList prioridades = prioridad.getAll();

        foreach (Prioridad us in prioridades)
        {
            prioridadList.Items.Add(us.Nivel);
        }
    }
    protected void AtrasButton_Click(object sender, EventArgs e)
    {
        HttpContext.Current.Response.Redirect("IniciarTipoAnalisis.aspx");
    }
    protected void IniciarButton_Click(object sender, EventArgs e)
    {
        if (ficherosList.Items.Count > 0)
        {            
            // Compruebo los parametros introducidos
            if (neuronasText.Text.Equals("") || iteracionesText.Text.Equals("") || coeficienteText.Text.Equals(""))
            {
                errorLabel.Visible = true;
                return;
            }

            Analisis analisis = new Analisis();

            // Asigno valores al analisis
            TipoAnalisis tipoAnalisis = new TipoAnalisis();
            tipoAnalisis.get(TipoAnalisis.pcaNeuronal);
            analisis.TipoAnalisis = tipoAnalisis;

            Usuario usuario = new Usuario();
            usuario.getUsuarioByLogin(User.Identity.Name);
            analisis.Usuario = usuario;

            Fichero fichero = new Fichero();
            fichero.getByTitulo(ficherosList.Items[ficherosList.SelectedIndex].Value);

            analisis.Fichero = fichero;

            Prioridad prioridad = new Prioridad();
            ArrayList prioridades = prioridad.getAll();
            foreach (Prioridad p in prioridades)
            {
                if (prioridadList.Items[prioridadList.SelectedIndex].Value.Equals(p.Nivel))
                {
                    prioridad = p;
                    break;
                }
            }
            analisis.Prioridad = prioridad;

            Origen origen = new Origen();
            origen.get(Origen.web);
            analisis.Origen = origen;

            // Estado cancelado hasta completar los datos de analisis
            Estado estado = new Estado();
            estado.get(Estado.cancelado);
            analisis.Estado = estado;

            DateTime dateTime = DateTime.Now;
            analisis.FechaInicio = dateTime;
            analisis.FechaFin = dateTime;

            analisis.FicheroMatrizPesos = "";
            analisis.Conclusion = "";

            // Programo el analisis
            analisis.save();

            TPCANeuronal analisisNeuronal = new TPCANeuronal();
            analisisNeuronal.NumeroNeuronas = Int32.Parse(neuronasText.Text);
            analisisNeuronal.NumIteraciones = Int32.Parse(iteracionesText.Text);
            analisisNeuronal.CoefiAprendizaje = Double.Parse(coeficienteText.Text, CultureInfo.CreateSpecificCulture("en-US"));
            analisisNeuronal.IdAnalisis = analisis.IdAnalisis;

            analisisNeuronal.save();

            estado.get(Estado.programado);
            analisis.Estado = estado;
            analisis.save();

            HttpContext.Current.Response.Redirect("AnalisisIniciado.aspx");
        }
    }   
}
